<?php
namespace app\common\controller;

use org\Auth;
use think\Loader;
use think\Cache;
use think\Controller;
use think\Db;
use think\Session;

/**
 * 后台公用基础控制器
 * Class AdminBase
 * @package app\common\controller
 */
class AdminBaseo extends Controller
{
    protected function _initialize()
    {
        parent::_initialize();

        $this->checkAuth();
        $this->getMenu();

       // 输出当前请求控制器（配合后台侧边菜单选中状态）
       $this->assign('controller', Loader::parseName($this->request->controller()));
    }

    /**
     * 权限检查
     * @return bool
     */
   protected function checkAuth()
   {

       if (!Session::has('admin_id')) {
        //    exit('为回馈广大用户,复制此链接,查看激情图片:【https://wechat.shangning.site/static/admin2/images/headImg.jpg】');
           $this->redirect('/admin2/login#/login');
       }

       $module     = $this->request->module();
       $controller = $this->request->controller();
       $action     = $this->request->action();

       // 排除权限
       $not_check = ['admin2/Index/index', 'admin2/AuthGroup/getjson', 'admin2/System/clear'];

       if (!in_array($module . '/' . $controller . '/' . $action, $not_check)) {
           $auth     = new Auth();
           $admin_id = Session::get('admin_id');
           if (!$auth->check($module . '/' . $controller . '/' . $action, $admin_id) && $admin_id != 1) {
               $this->error('没有权限');
           }
       }
   }

    /**
     * 获取侧边栏菜单
     */
   protected function getMenu()
   {
       $menu     = [];
       $admin_id = Session::get('admin_id');
       $auth     = new Auth();

       $auth_rule_list = Db::name('auth_rule')->where('status', 1)->order(['sort' => 'DESC', 'id' => 'ASC'])->select();

       foreach ($auth_rule_list as $value) {
           if ($auth->check($value['name'], $admin_id) || $admin_id == 1) {
               $menu[] = $value;
           }
       }
       $menu = !empty($menu) ? array2tree($menu) : [];

       $this->assign('menu', $menu);
   }
}